home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 11 / Mac Magazin and MacEasy Magazine CD - Issue 11.iso / Sharewarebibliothek / Text / Al-Kaatib to Nisus Writer / Al-Kaatib to Nisus Writer next >
Text File  |  1995-05-10  |  20KB  |  297 lines

  1. //Al-Kaatib to Nisus Writer Macro
  2. //For Nisus Writer 4.0
  3. //—Version 1.0—
  4. //6 March 1995
  5.  
  6. //This macro converts files from Eastern Language Systems' now defunct "Al-Kaatib" for Macintosh format to a WorldScript compatible format.  To use this macro, first save your Al-Kaatib file as text.  Then open the text in Nisus and run this macro.  If you show the Info bar before running the macro, you will get an indication of the macro’s rate of progress.
  7. //The macro is not very fast.  On my Quadra 800, it processes about 23,000 characters per hour.  It's best to run the macro when you won't need your computer for anything else for a while.  You can paste the plain text of several Al-Kaatib files into a Nisus window and let the macro run overnight.  Choose Info Bar from the Display submenu of the Tools menu so you can guage the progress of the macro.
  8. //If paragraphs in your original Al-Kaatib file are not separated by a blank line, you will need to add hard returns to re-define your paragraphs after the macro has run.
  9. //This macro is free, and may be freely distributed, but not sold for profit.  Al-Kaatib to Nisus Macro © 1995 by George Maschke.  All rights reserved.  Send comments to wtlefercus@aol.com.
  10.  
  11. //In the above documentation, I put the comment indicators "//" in the "Invisible" format.
  12. c = "" //this text variable must be initialized.  It will be used in the appendIt label below.
  13. //go to beginning of document:
  14. Key 
  15. loopA:
  16. //go to beginning of paragraph:
  17. Key 
  18. beginPara = CharNum
  19. //go to end of paragraph:
  20. Key 
  21. endPara = CharNum
  22. a = endPara-beginPara
  23. if (a==0) GoTo nextPara
  24. SetSelect (beginPara,endPara)
  25. MacroCopy
  26. text = clipboard
  27. loopB:
  28. currentChar = right (text, 1)
  29. //ASCII conversion begins here
  30. //I examined a sample Persian text with about 10,000 characters to determine which characters occurred most frequently.  I put the most frequently occurring characters at the beginning, and those that occurred very infrequently or not at all at the end.  As of 6 March 1995, the complete sequence has not been optimized.  However, further optimization of the order is unlikely to yield a significant performance increase.
  31. asciiValue = CharToNum (currentChar)
  32. If (asciiValue == 32) GoTo appendIt 
  33. If (asciiValue == 90) currentChar = NumToChar (199); GoTo appendIt 
  34. If (asciiValue == 163) currentChar = NumToChar (199); GoTo appendIt 
  35. If (asciiValue == 122) currentChar = NumToChar (232); GoTo appendIt 
  36. If (asciiValue == 172) currentChar = NumToChar (207); GoTo appendIt 
  37. If (asciiValue == 174) currentChar = NumToChar (209); GoTo appendIt 
  38. If (asciiValue == 133) currentChar = NumToChar (200); GoTo appendIt 
  39. If (asciiValue == 100) currentChar = NumToChar (207); GoTo appendIt 
  40. If (asciiValue == 228) currentChar = NumToChar (231); GoTo appendIt
  41. If (asciiValue == 156) currentChar = NumToChar (230); GoTo appendIt 
  42. If (asciiValue == 160) currentChar = NumToChar (234); GoTo appendIt 
  43. If (asciiValue == 102) currentChar = NumToChar (209); GoTo appendIt 
  44. If (asciiValue == 155) currentChar = NumToChar (229); GoTo appendIt 
  45. If (asciiValue == 194) currentChar = NumToChar (232); GoTo appendIt 
  46. If (asciiValue == 152) currentChar = NumToChar (227); GoTo appendIt 
  47. If (asciiValue == 197) currentChar = NumToChar (233); GoTo appendIt 
  48. If (asciiValue == 231) currentChar = NumToChar (233); GoTo appendIt 
  49. If (asciiValue == 177) currentChar = NumToChar (211); GoTo appendIt 
  50. If (asciiValue == 205) currentChar = NumToChar (202); GoTo appendIt 
  51. If (asciiValue == 120) currentChar = NumToChar (230); GoTo appendIt 
  52. If (asciiValue == 157) currentChar = NumToChar (231); GoTo appendIt 
  53. If (asciiValue == 44) currentChar = NumToChar (172); GoTo appendIt 
  54. If (asciiValue == 103) currentChar = NumToChar (210); GoTo appendIt 
  55. If (asciiValue == 142) currentChar = NumToChar (212); GoTo appendIt 
  56. If (asciiValue == 137) currentChar = NumToChar (204); GoTo appendIt 
  57. If (asciiValue == 165) currentChar = NumToChar (202); GoTo appendIt 
  58. If (asciiValue == 134) currentChar = NumToChar (202); GoTo appendIt 
  59. If (asciiValue == 136) currentChar = NumToChar (243); GoTo appendIt 
  60. If (asciiValue == 138) currentChar = NumToChar (205); GoTo appendIt 
  61. If (asciiValue == 139) currentChar = NumToChar (206); GoTo appendIt 
  62. If (asciiValue == 140) currentChar = NumToChar (245); GoTo appendIt 
  63. If (asciiValue == 141) currentChar = NumToChar (211); GoTo appendIt 
  64. If (asciiValue == 143) currentChar = NumToChar (213); GoTo appendIt 
  65. If (asciiValue == 144) currentChar = NumToChar (214); GoTo appendIt 
  66. If (asciiValue == 145) currentChar = NumToChar (215); GoTo appendIt 
  67. If (asciiValue == 147) currentChar = NumToChar (217); GoTo appendIt 
  68. If (asciiValue == 148) currentChar = NumToChar (218); GoTo appendIt 
  69. If (asciiValue == 149) currentChar = NumToChar (225); GoTo appendIt 
  70. If (asciiValue == 150) currentChar = NumToChar (226); GoTo appendIt 
  71. If (asciiValue == 153) currentChar = NumToChar (248); GoTo appendIt 
  72. If (asciiValue == 154) currentChar = NumToChar (228); GoTo appendIt 
  73. If (asciiValue == 158) currentChar = NumToChar (234); GoTo appendIt 
  74. If (asciiValue == 161) currentChar = NumToChar (198); GoTo appendIt 
  75. If (asciiValue == 164) currentChar = NumToChar (200); GoTo appendIt 
  76. If (asciiValue == 166) currentChar = NumToChar (203); GoTo appendIt 
  77. If (asciiValue == 167) currentChar = NumToChar (243); GoTo appendIt 
  78. If (asciiValue == 168) currentChar = NumToChar (204); GoTo appendIt 
  79. If (asciiValue == 169) currentChar = NumToChar (205); GoTo appendIt 
  80. If (asciiValue == 170) currentChar = NumToChar (206); GoTo appendIt 
  81. If (asciiValue == 171) currentChar = NumToChar (245); GoTo appendIt 
  82. If (asciiValue == 173) currentChar = NumToChar (208); GoTo appendIt 
  83. If (asciiValue == 175) currentChar = NumToChar (210); GoTo appendIt 
  84. If (asciiValue == 178) currentChar = NumToChar (212); GoTo appendIt 
  85. If (asciiValue == 179) currentChar = NumToChar (213); GoTo appendIt 
  86. If (asciiValue == 180) currentChar = NumToChar (214); GoTo appendIt 
  87. If (asciiValue == 181) currentChar = NumToChar (215); GoTo appendIt 
  88. If (asciiValue == 183) currentChar = NumToChar (217); GoTo appendIt 
  89. If (asciiValue == 184) currentChar = NumToChar (218); GoTo appendIt 
  90. If (asciiValue == 185) currentChar = NumToChar (225); GoTo appendIt 
  91. If (asciiValue == 186) currentChar = NumToChar (226); GoTo appendIt 
  92. If (asciiValue == 188) currentChar = NumToChar (227); GoTo appendIt 
  93. If (asciiValue == 189) currentChar = NumToChar (248); GoTo appendIt 
  94. If (asciiValue == 190) currentChar = NumToChar(228); GoTo appendIt 
  95. If (asciiValue == 191) currentChar = NumToChar (229); GoTo appendIt 
  96. If (asciiValue == 192) currentChar = NumToChar (230); GoTo appendIt 
  97. If (asciiValue == 193) currentChar = NumToChar (231); GoTo appendIt 
  98. //uncertain what character ASCII 202 represents
  99. If (asciiValue == 202) currentChar = NumToChar (199); GoTo appendIt 
  100. //uncertain what character ASCII 203 represents
  101. If (asciiValue == 203) currentChar = NumToChar (198); GoTo appendIt 
  102. If (asciiValue == 204) currentChar = NumToChar (200); GoTo appendIt 
  103. If (asciiValue == 206) currentChar = NumToChar (203); GoTo appendIt 
  104. If (asciiValue == 211) currentChar = NumToChar (245); GoTo appendIt 
  105. If (asciiValue == 212) currentChar = NumToChar (211); GoTo appendIt 
  106. If (asciiValue == 213) currentChar = NumToChar (212); GoTo appendIt 
  107. If (asciiValue == 214) currentChar = NumToChar (213); GoTo appendIt 
  108. If (asciiValue == 216) currentChar = NumToChar (215); GoTo appendIt 
  109. If (asciiValue == 218) currentChar = NumToChar (217); GoTo appendIt 
  110. If (asciiValue == 220) currentChar = NumToChar (225); GoTo appendIt 
  111. If (asciiValue == 221) currentChar = NumToChar (226); GoTo appendIt 
  112. If (asciiValue == 223) currentChar = NumToChar (227); GoTo appendIt 
  113. If (asciiValue == 225) currentChar = NumToChar (228); GoTo appendIt 
  114. If (asciiValue == 226) currentChar = NumToChar (229); GoTo appendIt 
  115. If (asciiValue == 227) currentChar = NumToChar (230); GoTo appendIt 
  116. If (asciiValue == 234) currentChar = NumToChar (228) + NumToChar (199); GoTo appendIt 
  117. If (asciiValue == 235) currentChar = NumToChar (228) + NumToChar (199); GoTo appendIt 
  118. If (asciiValue == 242) currentChar = NumToChar (194); GoTo appendIt 
  119. If (asciiValue == 250) currentChar = NumToChar (228) + NumToChar (233); GoTo appendIt 
  120. If (asciiValue == 33) currentChar = NumToChar (129); GoTo appendIt 
  121. If (asciiValue == 36) currentChar = NumToChar (164); GoTo appendIt 
  122. If (asciiValue == 40) currentChar = NumToChar (169); GoTo appendIt 
  123. If (asciiValue == 41) currentChar = NumToChar (168); GoTo appendIt 
  124. If (asciiValue == 45) currentChar = NumToChar (173); GoTo appendIt 
  125. If (asciiValue == 47) currentChar = NumToChar (174); GoTo appendIt 
  126. If (asciiValue == 49) currentChar = NumToChar (177); GoTo appendIt 
  127. If (asciiValue == 58) currentChar = NumToChar (186); GoTo appendIt 
  128. If (asciiValue == 59) currentChar = NumToChar (187); GoTo appendIt 
  129. If (asciiValue == 64) currentChar = NumToChar (140); GoTo appendIt 
  130. If (asciiValue == 65) currentChar = NumToChar (152); GoTo appendIt 
  131. If (asciiValue == 72) currentChar = NumToChar (239); GoTo appendIt 
  132. If (asciiValue == 78) currentChar = NumToChar (241); GoTo appendIt
  133. //The diacritical saad (ASCII 79) is not part of the Arabic WorldScript font set, hence, it will be deleted.
  134. If (asciiValue == 91) currentChar = NumToChar (200); GoTo appendIt 
  135. If (asciiValue == 92) currentChar = NumToChar (202); GoTo appendIt 
  136. If (asciiValue == 97) currentChar = NumToChar (205); GoTo appendIt 
  137. If (asciiValue == 106) currentChar = NumToChar (212); GoTo appendIt 
  138. If (asciiValue == 107) currentChar = NumToChar (213); GoTo appendIt 
  139. If (asciiValue == 108) currentChar = NumToChar (214); GoTo appendIt 
  140. If (asciiValue == 111) currentChar = NumToChar (217); GoTo appendIt 
  141. If (asciiValue == 113) currentChar = NumToChar (225); GoTo appendIt 
  142. If (asciiValue == 114) currentChar = NumToChar (226); GoTo appendIt 
  143. If (asciiValue == 118) currentChar = NumToChar (228); GoTo appendIt 
  144. If (asciiValue == 119) currentChar = NumToChar (229); GoTo appendIt 
  145. If (asciiValue == 121) currentChar = NumToChar (231); GoTo appendIt 
  146. If (asciiValue == 125) currentChar = NumToChar (233); GoTo appendIt 
  147. //ASCII values below appeared .02% of the time:
  148. If (asciiValue == 217) currentChar = NumToChar (216); GoTo appendIt 
  149. If (asciiValue == 50) currentChar = NumToChar (178); GoTo appendIt 
  150. If (asciiValue == 51) currentChar = NumToChar (179); GoTo appendIt 
  151. If (asciiValue == 52) currentChar = NumToChar (180); GoTo appendIt 
  152. If (asciiValue == 53) currentChar = NumToChar (181); GoTo appendIt 
  153. If (asciiValue == 135) currentChar = NumToChar (203); GoTo appendIt 
  154. If (asciiValue == 116) currentChar = NumToChar (227); GoTo appendIt 
  155. If (asciiValue == 249) currentChar = NumToChar (228) + NumToChar (233); GoTo appendIt 
  156. If (asciiValue == 233) currentChar = NumToChar (231) +NumToChar (193); GoTo appendIt 
  157. //uncertain what character ASCII 201 represents
  158. If (asciiValue == 201) currentChar = NumToChar (198); GoTo appendIt 
  159. If (asciiValue == 74) currentChar = NumToChar (235); GoTo appendIt 
  160. If (asciiValue == 195) currentChar = NumToChar (234); GoTo appendIt 
  161. //values below occurred .01% of the time:
  162. If (asciiValue == 252) currentChar = NumToChar (228) + NumToChar (229); GoTo appendIt 
  163. If (asciiValue == 210) currentChar = NumToChar (206); GoTo appendIt 
  164. If (asciiValue == 182) currentChar = NumToChar (216); GoTo appendIt 
  165. If (asciiValue == 251) currentChar = NumToChar (228) + NumToChar (229); GoTo appendIt 
  166. If (asciiValue == 56) currentChar = NumToChar (184); GoTo appendIt 
  167. If (asciiValue == 54) currentChar = NumToChar (182); GoTo appendIt 
  168. If (asciiValue == 71) currentChar = NumToChar (238); GoTo appendIt 
  169. If (asciiValue == 224) currentChar = NumToChar (248); GoTo appendIt 
  170. If (asciiValue == 109) currentChar = NumToChar (215); GoTo appendIt 
  171. If (asciiValue == 238) currentChar = NumToChar (228) + NumToChar (197); GoTo appendIt 
  172. If (asciiValue == 70) currentChar = NumToChar (228) + NumToChar (228) + NumToChar (241) + NumToChar (231); GoTo appendIt 
  173. If (asciiValue == 63) currentChar = NumToChar (191); GoTo appendIt 
  174. If (asciiValue == 55) currentChar = NumToChar (183); GoTo appendIt 
  175. If (asciiValue == 101) currentChar = NumToChar (208); GoTo appendIt 
  176. If (asciiValue == 57) currentChar = NumToChar (185); GoTo appendIt 
  177. If (asciiValue == 146) currentChar = NumToChar (216); GoTo appendIt 
  178. //These ASCII values never appeared in the sample text I examined:
  179. If (asciiValue == 34) currentChar = NumToChar (162); GoTo appendIt 
  180. If (asciiValue == 35) currentChar = NumToChar (163); GoTo appendIt 
  181. If (asciiValue == 37) currentChar = NumToChar (165); GoTo appendIt 
  182. If (asciiValue == 38) currentChar = NumToChar (175); GoTo appendIt 
  183. If (asciiValue == 39) currentChar = NumToChar (95); GoTo appendIt 
  184. If (asciiValue == 42) currentChar = NumToChar (192); GoTo appendIt 
  185. If (asciiValue == 43) currentChar = NumToChar (171); GoTo appendIt 
  186. If (asciiValue == 46) currentChar = NumToChar (44); GoTo appendIt 
  187. If (asciiValue == 48) currentChar = NumToChar (176); GoTo appendIt 
  188. If (asciiValue == 60) currentChar = NumToChar (190); GoTo appendIt 
  189. If (asciiValue == 61) currentChar = NumToChar (189); GoTo appendIt 
  190. If (asciiValue == 62) currentChar = NumToChar (188); GoTo appendIt 
  191. If (asciiValue == 66) currentChar = NumToChar (221); GoTo appendIt 
  192. If (asciiValue == 67) currentChar = NumToChar (219); GoTo appendIt 
  193. If (asciiValue == 68) currentChar = NumToChar (220); GoTo appendIt 
  194. If (asciiValue == 69) currentChar = NumToChar (161); GoTo appendIt 
  195. If (asciiValue == 73) currentChar = NumToChar (240); GoTo appendIt 
  196. If (asciiValue == 75) currentChar = NumToChar (236); GoTo appendIt 
  197. If (asciiValue == 76) currentChar = NumToChar (237); GoTo appendIt 
  198. If (asciiValue == 77) currentChar = NumToChar (242); GoTo appendIt 
  199. If (asciiValue == 79) currentChar = ""; GoTo appendIt 
  200. //The independent maada (ASCII 80) is not part of the Arabic WorldScript font set, hence, it will be deleted.
  201. If (asciiValue == 80) currentChar = ""; GoTo appendIt 
  202. //The dagger alef (ASCII 81) is not part of the Arabic WorldScript font set, hence, it will be deleted.
  203. If (asciiValue == 81) currentChar = ""; GoTo appendIt 
  204. If (asciiValue == 82) currentChar = NumToChar (241) + NumToChar (238); GoTo appendIt 
  205. If (asciiValue == 83) currentChar = NumToChar (241) + NumToChar (239); GoTo appendIt 
  206. If (asciiValue == 84) currentChar = NumToChar (241) +NumToChar (240); GoTo appendIt 
  207. If (asciiValue == 85) currentChar = NumToChar (241) +NumToChar (235); GoTo appendIt 
  208. If (asciiValue == 86) currentChar = NumToChar (241) +NumToChar (236); GoTo appendIt 
  209. If (asciiValue == 87) currentChar = NumToChar (241) +NumToChar (237); GoTo appendIt 
  210. //ASCII 88 = Blank?
  211. If (asciiValue == 88) currentChar = NumToChar (129); GoTo appendIt 
  212. If (asciiValue == 89) currentChar = NumToChar (193); GoTo appendIt 
  213. If (asciiValue == 93) currentChar = NumToChar (203); GoTo appendIt 
  214. If (asciiValue == 94) currentChar = NumToChar (243); GoTo appendIt 
  215. If (asciiValue == 95) currentChar = NumToChar (204); GoTo appendIt 
  216. //Don't know what ASCII 96 is.  It will be deleted.
  217. If (asciiValue == 96) currentChar = ""; GoTo appendIt 
  218. If (asciiValue == 98) currentChar = NumToChar (206); GoTo appendIt 
  219. If (asciiValue == 99) currentChar = NumToChar (245); GoTo appendIt 
  220. If (asciiValue == 104) currentChar = NumToChar (254); GoTo appendIt 
  221. If (asciiValue == 105) currentChar = NumToChar (211); GoTo appendIt 
  222. If (asciiValue == 110) currentChar = NumToChar (216); GoTo appendIt 
  223. If (asciiValue == 112) currentChar = NumToChar (218); GoTo appendIt 
  224. If (asciiValue == 115) currentChar = NumToChar (247); GoTo appendIt 
  225. If (asciiValue == 117) currentChar = NumToChar (248); GoTo appendIt 
  226. If (asciiValue == 123) currentChar = NumToChar (234); GoTo appendIt 
  227. If (asciiValue == 124) currentChar = NumToChar (201); GoTo appendIt 
  228. If (asciiValue == 126) currentChar = NumToChar (195); GoTo appendIt 
  229. If (asciiValue == 127) currentChar = NumToChar (197); GoTo appendIt 
  230. If (asciiValue == 128) currentChar = NumToChar (196); GoTo appendIt 
  231. If (asciiValue == 129) currentChar = NumToChar (198); GoTo appendIt 
  232. If (asciiValue == 130) currentChar = NumToChar (231); GoTo appendIt 
  233. If (asciiValue == 131) currentChar = NumToChar (224); GoTo appendIt 
  234. If (asciiValue == 132) currentChar = NumToChar (129); GoTo appendIt 
  235. If (asciiValue == 151) currentChar = NumToChar (247); GoTo appendIt 
  236. If (asciiValue == 159) currentChar = NumToChar (201); GoTo appendIt 
  237. If (asciiValue == 162) currentChar = NumToChar (198); GoTo appendIt 
  238. If (asciiValue == 176) currentChar = NumToChar (254); GoTo appendIt 
  239. If (asciiValue == 187) currentChar = NumToChar (247); GoTo appendIt 
  240. If (asciiValue == 196) currentChar = NumToChar (201); GoTo appendIt 
  241. If (asciiValue == 198) currentChar = NumToChar (195); GoTo appendIt 
  242. If (asciiValue == 199) currentChar = NumToChar (197); GoTo appendIt 
  243. If (asciiValue == 200) currentChar = NumToChar (196); GoTo appendIt 
  244. If (asciiValue == 207) currentChar = NumToChar (243); GoTo appendIt 
  245. If (asciiValue == 208) currentChar = NumToChar (204); GoTo appendIt 
  246. If (asciiValue == 209) currentChar = NumToChar (205); GoTo appendIt 
  247. If (asciiValue == 215) currentChar = NumToChar (214); GoTo appendIt 
  248. If (asciiValue == 219) currentChar = NumToChar (218); GoTo appendIt 
  249. If (asciiValue == 222) currentChar = NumToChar (247); GoTo appendIt 
  250. If (asciiValue == 229) currentChar = NumToChar (234); GoTo appendIt 
  251. If (asciiValue == 230) currentChar = NumToChar (201); GoTo appendIt 
  252. If (asciiValue == 232) currentChar = NumToChar (198); GoTo appendIt 
  253. If (asciiValue == 236) currentChar = NumToChar (228) + NumToChar (195); GoTo appendIt 
  254. If (asciiValue == 237) currentChar = NumToChar (228) + NumToChar (195); GoTo appendIt 
  255. If (asciiValue == 239) currentChar = NumToChar (228) + NumToChar (197); GoTo appendIt 
  256. If (asciiValue == 240) currentChar = NumToChar (228) + NumToChar (194); GoTo appendIt 
  257. If (asciiValue == 241) currentChar = NumToChar (228) + NumToChar (194); GoTo appendIt 
  258. If (asciiValue == 243) currentChar = NumToChar (194); GoTo appendIt 
  259. If (asciiValue == 244) currentChar = NumToChar (195); GoTo appendIt 
  260. If (asciiValue == 245) currentChar = NumToChar (195); GoTo appendIt 
  261. If (asciiValue == 246) currentChar = NumToChar (225) + NumToChar (234); GoTo appendIt 
  262. If (asciiValue == 247) currentChar = NumToChar (228) + NumToChar (234); GoTo appendIt 
  263. If (asciiValue == 248) currentChar = NumToChar (228) + NumToChar (234); GoTo appendIt 
  264. //ASCII 253 unknown
  265. If (asciiValue == 253) currentChar = ""; GoTo appendIt 
  266. //ASCII 254 unknown
  267. If (asciiValue == 254) currentChar = ""; GoTo appendIt 
  268. //ASCII 255 unknown
  269. If (asciiValue == 255) currentChar = ""; GoTo appendIt 
  270. //ASCII conversion ends here
  271. appendIt:
  272. c = c + currentChar
  273. a = a-1
  274. text = left (text, a)
  275. if (a>0) GoTo loopB
  276. pasteIt:
  277. clipboard = c
  278. c = "" //re-initializing c
  279. MacroPaste
  280. nextPara:
  281. Key 
  282. endCheck = CharNum
  283. Key 
  284. if (CharNum==endCheck) GoTo stripLineFeeds
  285. GoTo loopA
  286. stripLineFeeds:
  287. Select All
  288. //Next we strip line feeds.  If paragraphs in the original Al-Kaatib file were not separated by a blank line, then they will be combined into one large paragraph.  When Al-Kaatib exports text, it puts a hard return at the end of each line, thus it is impossible to determine which hard returns are merely line breaks and which ones define new paragraphs.  You may have to edit your converted file to re-define your paragraphs.  Note that each line of Al-Kaatib exported text begins with a space, so we don’t need to replace line feeds with a space; we simply remove them.
  289. Find/Replace ":<[^\r]\r:>[^\r]" "" "gtsA"
  290. changeFont:
  291. //This routine changes all text to the «‰‚«Á—… font.
  292. «‰‚«Á—…
  293. //Choose the «‰‚«Á—…  (Al-Qahira) font while holding the shift key.  I chose this font because you’re likely to have it.  If your text was in Persian characters, you will want to change to a Persian font, because the Arabic fonts don't have the Persian "narrow space" or "heh-hamzeh."
  294. Right to Left
  295. //Changes text flow direction
  296. Key 
  297. //Go to the beginning of the document, while simultaneously deselecting all text.